package com.shensi.api.admin.domian.station.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.shensi.api.admin.domian.coupon.dto.SysOilDto;
import com.shensi.common.core.annotation.Excel;
import com.shensi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 优惠劵对象 CouponCreation
 *
 * @author LogicQin
 * @date 20230621
 */
public class CouponCreationDto extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * $column.columnComment
     */
//    发放表的id
    private String id;
    @ApiModelProperty("优惠劵ID")
    private Integer couponId;

    //    @ApiModelProperty("优惠劵名称")
//    @Excel(name = "优惠劵名称")
    private String couponName;


    @ApiModelProperty("优惠劵名称")
    @Excel(name = "优惠劵名称")
    private String issueRemark;


    @ApiModelProperty("优惠劵类型 1现金劵，2折扣券，3兑换券")
    @Excel(name = "优惠劵类型 1现金劵，2折扣券，3兑换券")
    private String couponType;

    @ApiModelProperty("优惠劵面值，金额，折扣比例")
    @Excel(name = "优惠劵面值，金额，折扣比例")
    private BigDecimal couponAmt;

    @ApiModelProperty("优惠劵数量")
    @Excel(name = "优惠劵数量")
    private Integer couponNum;

    @ApiModelProperty("有效时间类型： 1，固定时间；2，领取后x天内有效")
    @Excel(name = "有效时间类型： 1，固定时间；2，领取后x天内有效")
    private String effectiveTimeType;

    @ApiModelProperty("固定时间-有效开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "固定时间-有效开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date effectiveTimeStart;

    @ApiModelProperty("固定时间-有效结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "固定时间-有效结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date effectiveTimeEnd;

    @ApiModelProperty("发放时间-开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "发放时间-开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date startDate;
    @ApiModelProperty("发放时间-结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "发放时间-结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date endDate;


    @ApiModelProperty("有效天数")
    @Excel(name = "有效天数")
    private Integer effectiveDayNum;

    @ApiModelProperty("优惠劵领取数量")
    @Excel(name = "优惠劵领取数量")
    private Integer getCouponNum;

    @ApiModelProperty("优惠卷使用数量")
    @Excel(name = "优惠卷使用数量")
    private Integer useCouponNum;

    @ApiModelProperty("优惠内容")
    private String couponDetails;

    @ApiModelProperty("使用说明")
    private String usageDescription;

    @ApiModelProperty("有效状态：0，未生效； 1，生效；2，失效；")
    @Excel(name = "有效状态：0，未生效； 1，生效；2，失效；")
    private String status;

    @ApiModelProperty("优惠劵标识")
    private String couponRemark;

    @ApiModelProperty("是否删除优惠劵 1是 0否")
    private String delFlag;

    @ApiModelProperty("企业ID")
    private Long enterpriseId;

    @ApiModelProperty("优惠劵站点ID")
    private String verification;

    @ApiModelProperty("验证列表，存储验证信息的整数列表")
    private List<Integer> verificationList;

    @ApiModelProperty("验证名称列表，存储验证信息的字符串列表")
    private List<String> verificationNameList;

    @ApiModelProperty("最低可使用优惠券金额")
    private BigDecimal minUseCouponAmt;

    @ApiModelProperty("有效时间列表，存储时间信息的字符串列表")
    private List<String> effectiveTime;


    @ApiModelProperty("发放时间列表，存储时间信息的字符串列表")
    private List<String> allDate;

    @ApiModelProperty("编辑标志，表示是否可以编辑的标志字符串")
    private String editFlag;

    @ApiModelProperty("指定天数，表示指定的天数字符串")
    private String appointedDays;

    @ApiModelProperty("循环天数，表示循环的天数字符串")
    private String cycleDays;

    @ApiModelProperty("可用控制，表示可用控制的字符串")
    private String availableControl;

    @ApiModelProperty("指定天数列表，存储指定天数的字符串列表")
    private List<String> appointedDaysList;

    @ApiModelProperty("循环天数列表，存储循环天数的字符串列表")
    private List<String> cycleDaysList;

    @ApiModelProperty("油站ID")
    private Long stationId;

    @ApiModelProperty("油品ID列表")
    private List<SysOilDto> oilIdLists;

    @ApiModelProperty("一天最多几张")
    private Long countOfDay;

    @ApiModelProperty("发放次数")
    @Excel(name = "发放次数")
    private Long giveCount;

    @ApiModelProperty("使用门槛")
    private BigDecimal couponThresholdAmt;

    @ApiModelProperty("单月参与次数")
    private Integer countOfMonth;

    @ApiModelProperty("油品部分或全部标识")
    private Long oilPartOrAll;

    @ApiModelProperty("展示位置ID(1支付成功之后的展示位，2待定，3待定)")
    @Excel(name = "展示位置ID(1支付成功之后的展示位，2待定，3待定)")
    private String showId;

    @ApiModelProperty("登记（1普卡2银卡3金卡4钻石5黑开）")
    private String memberLevel;

    @ApiModelProperty("支付方式（zfb,wx,xj,dzk,yl）")
    private String paymentMethod;

    @ApiModelProperty("用户类型（olduser老用户，newuser新用户,labelUser标签用户）")
    private String memberTags;

    @ApiModelProperty("展示位置ID列表")
    private List<String> showIdList;

    @ApiModelProperty("登记列表")
    private List<String> memberLevelList;

    @ApiModelProperty("支付方式列表")
    private List<String> paymentMethodList;

    @ApiModelProperty("用户类型列表")
    private List<String> memberTagsList;

    @ApiModelProperty("油站名称")
    private String stationName;

    @ApiModelProperty("查询开始时间")
    private String beginTime;

    @ApiModelProperty("查询结束时间")
    private String endTime;


    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getStationName() {
        return stationName;
    }

    public void setStationName(String stationName) {
        this.stationName = stationName;
    }

    public Integer getCouponId() {
        return couponId;
    }

    public void setCouponId(Integer couponId) {
        this.couponId = couponId;
    }

    public Long getOilPartOrAll() {
        return oilPartOrAll;
    }

    public void setOilPartOrAll(Long oilPartOrAll) {
        this.oilPartOrAll = oilPartOrAll;
    }

    public String getShowId() {
        return showId;
    }

    public void setShowId(String showId) {
        this.showId = showId;
    }

    public String getMemberLevel() {
        return memberLevel;
    }

    public void setMemberLevel(String memberLevel) {
        this.memberLevel = memberLevel;
    }

    public String getPaymentMethod() {
        return paymentMethod;
    }

    public void setPaymentMethod(String paymentMethod) {
        this.paymentMethod = paymentMethod;
    }

    public String getMemberTags() {
        return memberTags;
    }

    public void setMemberTags(String memberTags) {
        this.memberTags = memberTags;
    }

    public List<String> getShowIdList() {
        return showIdList;
    }

    public void setShowIdList(List<String> showIdList) {
        this.showIdList = showIdList;
    }

    public List<String> getMemberLevelList() {
        return memberLevelList;
    }

    public void setMemberLevelList(List<String> memberLevelList) {
        this.memberLevelList = memberLevelList;
    }

    public List<String> getPaymentMethodList() {
        return paymentMethodList;
    }

    public void setPaymentMethodList(List<String> paymentMethodList) {
        this.paymentMethodList = paymentMethodList;
    }

    public List<String> getMemberTagsList() {
        return memberTagsList;
    }

    public void setMemberTagsList(List<String> memberTagsList) {
        this.memberTagsList = memberTagsList;
    }

    public Integer getCountOfMonth() {
        return countOfMonth;
    }

    public void setCountOfMonth(Integer countOfMonth) {
        this.countOfMonth = countOfMonth;
    }

    public BigDecimal getCouponThresholdAmt() {
        return couponThresholdAmt;
    }

    public void setCouponThresholdAmt(BigDecimal couponThresholdAmt) {
        this.couponThresholdAmt = couponThresholdAmt;
    }

    public Long getGiveCount() {
        return giveCount;
    }

    public void setGiveCount(Long giveCount) {
        this.giveCount = giveCount;
    }

    public CouponCreationDto() {
    }

    public Long getCountOfDay() {
        return countOfDay;
    }

    public void setCountOfDay(Long countOfDay) {
        this.countOfDay = countOfDay;
    }

    /**
     * 获取油站ID
     *
     * @return 油站ID
     */
    public Long getStationId() {
        return stationId;
    }

    /**
     * 设置油站ID
     *
     * @param stationId 油站ID
     */
    public void setStationId(Long stationId) {
        this.stationId = stationId;
    }

    /**
     * 获取油品ID集合
     *
     * @return 油品ID集合
     */
    public List<SysOilDto> getOilIdLists() {
        return oilIdLists;
    }

    /**
     * 设置油品ID集合
     *
     * @param oilIdLists 油品ID集合
     */
    public void setOilIdLists(List<SysOilDto> oilIdLists) {
        this.oilIdLists = oilIdLists;
    }

    public BigDecimal getMinUseCouponAmt() {
        return minUseCouponAmt;
    }

    public void setMinUseCouponAmt(BigDecimal minUseCouponAmt) {
        this.minUseCouponAmt = minUseCouponAmt;
    }

    public String getVerification() {
        return verification;
    }

    public void setVerification(String verification) {
        this.verification = verification;
    }

    public List<Integer> getVerificationList() {
        return verificationList;
    }

    public void setVerificationList(List<Integer> verificationList) {
        this.verificationList = verificationList;
    }

    public List<String> getVerificationNameList() {
        return verificationNameList;
    }

    public void setVerificationNameList(List<String> verificationNameList) {
        this.verificationNameList = verificationNameList;
    }

    public Long getEnterpriseId() {
        return enterpriseId;
    }

    public void setEnterpriseId(Long enterpriseId) {
        this.enterpriseId = enterpriseId;
    }

    public String getCouponRemark() {
        return couponRemark;
    }

    public void setCouponRemark(String couponRemark) {
        this.couponRemark = couponRemark;
    }


    public Integer getGetCouponNum() {
        return getCouponNum;
    }

    public void setGetCouponNum(Integer getCouponNum) {
        this.getCouponNum = getCouponNum;
    }

    public Integer getUseCouponNum() {
        return useCouponNum;
    }

    public void setUseCouponNum(Integer useCouponNum) {
        this.useCouponNum = useCouponNum;
    }

    public List<String> getAppointedDaysList() {
        return appointedDaysList;
    }

    public void setAppointedDaysList(List<String> appointedDaysList) {
        this.appointedDaysList = appointedDaysList;
    }

    public List<String> getCycleDaysList() {
        return cycleDaysList;
    }

    public void setCycleDaysList(List<String> cycleDaysList) {
        this.cycleDaysList = cycleDaysList;
    }

    public String getAppointedDays() {
        return appointedDays;
    }

    public void setAppointedDays(String appointedDays) {
        this.appointedDays = appointedDays;
    }

    public String getCycleDays() {
        return cycleDays;
    }

    public void setCycleDays(String cycleDays) {
        this.cycleDays = cycleDays;
    }

    public String getAvailableControl() {
        return availableControl;
    }

    public void setAvailableControl(String availableControl) {
        this.availableControl = availableControl;
    }

    public String getEditFlag() {
        return editFlag;
    }

    public void setEditFlag(String editFlag) {
        this.editFlag = editFlag;
    }

    public List<String> getEffectiveTime() {
        return effectiveTime;
    }

    public void setEffectiveTime(List<String> effectiveTime) {
        this.effectiveTime = effectiveTime;
    }


    public Integer getCouponNum() {
        return couponNum;
    }

    public void setCouponNum(Integer couponNum) {
        this.couponNum = couponNum;
    }


    public String getCouponDetails() {
        return couponDetails;
    }

    public void setCouponDetails(String couponDetails) {
        this.couponDetails = couponDetails;
    }


    public void setCouponName(String couponName) {
        this.couponName = couponName;
    }

    public String getCouponName() {
        return couponName;
    }

    public void setCouponType(String couponType) {
        this.couponType = couponType;
    }

    public String getCouponType() {
        return couponType;
    }

    public void setCouponAmt(BigDecimal couponAmt) {
        this.couponAmt = couponAmt;
    }

    public BigDecimal getCouponAmt() {
        return couponAmt;
    }

    public void setEffectiveTimeType(String effectiveTimeType) {
        this.effectiveTimeType = effectiveTimeType;
    }

    public String getEffectiveTimeType() {
        return effectiveTimeType;
    }

    public void setEffectiveTimeStart(Date effectiveTimeStart) {
        this.effectiveTimeStart = effectiveTimeStart;
    }

    public Date getEffectiveTimeStart() {
        return effectiveTimeStart;
    }

    public void setEffectiveTimeEnd(Date effectiveTimeEnd) {
        this.effectiveTimeEnd = effectiveTimeEnd;
    }

    public Date getEffectiveTimeEnd() {
        return effectiveTimeEnd;
    }

    public void setEffectiveDayNum(Integer effectiveDayNum) {
        this.effectiveDayNum = effectiveDayNum;
    }

    public Integer getEffectiveDayNum() {
        return effectiveDayNum;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getStatus() {
        return status;
    }

    public void setDelFlag(String delFlag) {
        this.delFlag = delFlag;
    }

    public String getDelFlag() {
        return delFlag;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)

                .append("couponName", getCouponName())
                .append("couponType", getCouponType())
                .append("couponAmt", getCouponAmt())
                .append("couponNum", getCouponNum())
                .append("effectiveTimeType", getEffectiveTimeType())
                .append("effectiveTimeStart", getEffectiveTimeStart())
                .append("effectiveTimeEnd", getEffectiveTimeEnd())
                .append("effectiveDayNum", getEffectiveDayNum())
                .append("status", getStatus())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .append("delFlag", getDelFlag())
                .toString();
    }

    @Override
    public String getBeginTime() {
        return beginTime;
    }

    @Override
    public void setBeginTime(String beginTime) {
        this.beginTime = beginTime;
    }

    @Override
    public String getEndTime() {
        return endTime;
    }

    @Override
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }

    public String getIssueRemark() {
        return issueRemark;
    }

    public void setIssueRemark(String issueRemark) {
        this.issueRemark = issueRemark;
    }

    public Date getStartDate() {
        return startDate;
    }

    public void setStartDate(Date startDate) {
        this.startDate = startDate;
    }

    public Date getEndDate() {
        return endDate;
    }

    public void setEndDate(Date endDate) {
        this.endDate = endDate;
    }

    public String getUsageDescription() {
        return usageDescription;
    }

    public void setUsageDescription(String usageDescription) {
        this.usageDescription = usageDescription;
    }

    public List<String> getAllDate() {
        return allDate;
    }

    public void setAllDate(List<String> allDate) {
        this.allDate = allDate;
    }
}
